#ifndef __M_LEVEL_H__
#define __M_LEVEL_H__

namespace cl{
/**
 * @brief LogLevel 枚举用于表示日志记录的级别。
 * 
 * 日志级别表示日志信息的严重程度。较高的级别表示较为严重的日志事件，较低的级别表示较为详细的日志信息。
 * 
 * 日志记录器可以根据当前设置的日志级别来过滤不同级别的日志。日志级别的顺序从低到高为：
 * `DEBUG < INFO < WARN < ERROR < FATAL`。
 */
class LogLevel{
public:
    enum value{
        UNKNOWN = 0, // 未知/默认日志级别
        DEBUG,      // 调试级别
        INFO,       // 信息级别
        WARN,       // 警告级别
        ERROR,      // 错误级别
        FATAL,      // 指明错误级别
        OFF         // 关闭日志记录
    };

    // 将日志级别转换为对应的字符串表示
    static const char *toString(LogLevel::value level){
        switch(level){
            case LogLevel::value::DEBUG: return "DEBUG";
            case LogLevel::value::INFO: return "INFO";
            case LogLevel::value::WARN: return "WARN";
            case LogLevel::value::ERROR: return "ERROR";
            case LogLevel::value::FATAL: return "FATAL";
            case LogLevel::value::OFF: return "OFF";
        }
        return "UNKNOWN";
    }
}; // class LogLevel
}
#endif